#include <string>
#include <iostream>
#include <forward_list>

/**
 * @brief 在链表中查找str1，并将str2插入到紧接着str1之后的位置。若第一个str1不在链表中，则将str2插入到链表末尾
 * 
 */
void insertString(std::forward_list<std::string> &sflst, const std::string &str1, const std::string &str2)
{
    auto prev = sflst.before_begin(); // 前驱元素
    auto curr = sflst.begin(); // 当前元素
    bool inserted = false;

    while(curr != sflst.end())
    {
        if(*curr == str1) // 找到给定字符串
        {
            curr = sflst.insert_after(curr, str2); // 插入新字符串，curr 指向它
            inserted = true;
        }
        prev = curr; // 前驱迭代器向前推进
        curr++; // 当前迭代器向前推进
    }   
    if(!inserted)
    {
        sflst.insert_after(prev, str2); // 未找到给定字符串，插入尾后
    }
}